import server from '@/utils/http';
import qs from 'qs';
import { PaginationQuery } from '@/types/table';

enum Api {
    curMerchant = '/api/merchant',
    merchant = '/api/merchant/child',
    merchantPage = '/api/merchant/page/merchant', //分页查询
    area = '/api/merchantArea',
    industry = '/api/merchant/industry',
    countryRegion = '/api/countryRegion',
    merchantExpand = '/api/merchantExpand',
    merchantStore = '/api/merchant/page/store',
    merchantAgent = 'api/merchant/page/agent',
    areaMerchant = 'api/merchant/areaMerchant',
    skuDict = 'api/skuDict/merchant',
    merchantFreeze = '/api/merchant/freeze',
    merchantResetPaw = '/api/merchant/resetPaw',
    areaTree = '/api/merchantArea/tree',
    curMerchantAll = '/api/merchant/all',
}

/**
 * @description 获取所有商户列表
 * @param
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getCurMerchantData = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.curMerchantAll, query);
};

/**
 * @description 获取商户列表
 * @param
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getMerchantPageData = (query?: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.merchantPage, query);
};

/**
 *
 * @description 新增商户
 * @param addMQ info
 */
export const addMerchant = (params: NormalObj): Promise<void> => {
    return server.Post(Api.curMerchant, params);
};
/**
 *
 * @description 编辑商户
 * @param editType info
 */
export const editMerchant = (params: NormalObj): Promise<void> => {
    return server.Put(Api.curMerchant, params);
};

/**
 * @description 根据商户ID获取门店列表
 * @param
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getMerchantData = (query?: PaginationQuery): Promise<TableResponse> => {
    return server.Get(query ? Api.merchant + '/' + query.parentCode : Api.merchant);
};

/**
 * @description 获取区域列表
 * @param
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getArea = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.area, query);
};
/**
 * @description 获取区域列表
 * @param
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getAreaTree = (): Promise<NormalObj[]> => {
    return server.Get(Api.areaTree);
};

/**
 *
 * @description 新增区域
 * @param addMQ info
 */
export const addArea = (params: NormalObj): Promise<void> => {
    return server.Post(Api.area, params);
};
/**
 *
 * @description 编辑区域
 * @param editType info
 */
export const editArea = (params: NormalObj): Promise<void> => {
    return server.Put(Api.area, params);
};
/**
 *
 * @description 删除区域
 * @param ids 分类id
 */
export const deleteArea = (params: (string | number)[]): Promise<void> => {
    return server.Delete(Api.area, { data: params });
};

/**
 * @description 获取行业列表
 * @param
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getIndustry = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.industry, query);
};

/**
 * @description 获取省市区
 * @return { content: 列表, totalElements： 总数 }
 */
export const getCountry = (query?: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.countryRegion, query);
};

/**
 * @description 查询商户扩展
 * @param
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getMerchantExpand = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.merchantExpand, query);
};

/**
 *
 * @description 新增商户扩展
 * @param addMQ info
 */
export const addMerchantExpand = (params: NormalObj): Promise<void> => {
    return server.Post(Api.merchantExpand, params);
};
/**
 *
 * @description 编辑商户扩展
 * @param editType info
 */
export const editMerchantExpand = (params: NormalObj): Promise<void> => {
    return server.Put(Api.merchantExpand, params);
};
/**
 *
 * @description 删除商户扩展
 * @param ids 分类id
 */
export const deleteMerchantExpand = (params: (string | number)[]): Promise<void> => {
    return server.Delete(Api.merchantExpand, { data: params });
};

/**
 * @description 获取所有门店列表
 * @param
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getMerchantStore = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.merchantStore, query);
};

/**
 * @description 获取所有代理商列表
 * @param
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getMerchantAgent = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.merchantAgent, query);
};

/**
 * @description 查询区域下的门店
 * @param
 * @param page 页码
 * @param size pageSize
 * @sort 排序方式 默认level,asc
 * @return { content: 列表, totalElements： 总数 }
 */
export const getareaMerchant = (query: PaginationQuery): Promise<TableResponse> => {
    return server.Get(Api.areaMerchant, query);
};

/**
 * @description 查询区域下的门店
 * @param

 * @sort 排序方式 默认level,asc
 * @return { content: 列表,}
 */
export const getaskuDict = (): Promise<void> => {
    return server.Get(Api.skuDict);
};

/**
 * @description 冻结解冻
 * @param params info
 */
export const getMerchantFreeze = (params: NormalObj): Promise<void> => {
    return server.Put(Api.merchantFreeze, params);
};

/**
 * @description 重置密码
 * @param params info
 */
export const getMerchantResetPaw = (params: NormalObj): Promise<void> => {
    return server.Put(Api.merchantResetPaw, params);
};
